home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / include / scribus-ng / scpainterex_cairo.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-03-15  |  4.1 KB  |  133 lines

  1. /*
  2. For general Scribus (>=1.3.2) copyright and licensing information please refer
  3. to the COPYING file provided with the program. Following this notice may exist
  4. a copyright and/or license notice that predates the release of Scribus 1.3.2
  5. for which a new license (GPL+exception) is in place.
  6. */
  7.  
  8. #ifndef SCPAINTEREX_CAIRO_H
  9. #define SCPAINTEREX_CAIRO_H
  10.  
  11. #include <cairo.h>
  12. #include "scpainterexbase.h"
  13.  
  14. class ScPainterEx_Cairo : public ScPainterExBase
  15. {
  16. public:
  17.     ScPainterEx_Cairo(cairo_t* context, QRect& rect, ScribusDoc* doc, bool gray );
  18.     virtual ~ScPainterEx_Cairo();
  19.  
  20.     virtual Capabilities capabilities() { return transparencies; }
  21.  
  22.     virtual int supportedColorModes() { return (int) rgbMode; }
  23.     virtual ColorMode preferredColorMode() { return rgbMode; }
  24.     virtual ImageMode imageMode() { return rgbImages; }
  25.  
  26.     virtual void begin();
  27.     virtual void end();
  28.     virtual void clear();
  29.     virtual void clear( ScColorShade & );
  30.  
  31.     // matrix manipulation
  32.     virtual void setWorldMatrix( const QMatrix & );
  33.     virtual const QMatrix worldMatrix();
  34.     virtual void translate( double, double );
  35.     virtual void rotate( double );
  36.     virtual void scale( double, double );
  37.  
  38.     // drawing
  39.     virtual void moveTo( const double &, const double & );
  40.     virtual void lineTo( const double &, const double & );
  41.     virtual void curveTo( FPoint p1, FPoint p2, FPoint p3 );
  42.     virtual void newPath();
  43.     virtual void closePath();
  44.     virtual void fillTextPath();
  45.     virtual void strokeTextPath();
  46.     virtual void fillPath();
  47.     virtual void strokePath();
  48.     virtual void setFillRule( bool fillRule );
  49.     virtual bool fillRule() { return m_fillRule; }
  50.     virtual void setFillMode( int fill );
  51.     virtual int  fillMode() { return m_fillMode; }
  52.     virtual void setGradient( VGradientEx::Type mode, FPoint orig, FPoint vec, FPoint foc = FPoint(0,0));
  53.     virtual void setPattern ( ScPattern* pattern, QMatrix& patternTransform );
  54.     virtual void setClipPath();
  55.  
  56.     virtual void drawImage( ScImage *image, ScPainterExBase::ImageMode mode );
  57.     virtual void setupPolygon(FPointArray *points, bool closed = true);
  58.     virtual void drawPolygon();
  59.     virtual void drawPolyLine();
  60.     virtual void drawLine(FPoint start, FPoint end);
  61.     virtual void drawRect(double, double, double, double);
  62.  
  63.     // pen + brush
  64.     virtual ScColorShade pen();
  65.     virtual ScColorShade brush();
  66.     virtual void setPen( const ScColorShade & );
  67.     virtual void setPen( const ScColorShade &c, double w, Qt::PenStyle st, Qt::PenCapStyle ca, Qt::PenJoinStyle jo );
  68.     virtual void setPenOpacity( double op );
  69.     virtual void setLineWidth( double w);
  70.     virtual void setDash(const QVector<double>& array, double ofs);
  71.     virtual void setBrush( const ScColorShade & );
  72.     virtual void setBrushOpacity( double op );
  73.     virtual void setOpacity( double op );
  74.     virtual void setFont( const QFont &f );
  75.     virtual QFont font();
  76.  
  77.     // stack management
  78.     virtual void save();
  79.     virtual void restore();
  80.  
  81.     virtual void setRasterOp( int op );
  82.  
  83. private:
  84.  
  85.     void drawVPath( int mode );
  86.     void drawGradient( VGradientEx& gradient );
  87.     void drawLinearGradient( VGradientEx& gradient, const QRect& rect );
  88.     void drawCircularGradient( VGradientEx& gradient, const QRect& rect );
  89.     void getClipPathDimensions( QRect& r );
  90.  
  91.     ScribusDoc* m_doc;
  92.  
  93.     unsigned int m_width;
  94.     unsigned int m_height;
  95.     QMatrix m_matrix;
  96.     QFont m_font;
  97. /* Filling */
  98.     ScColorShade m_fillColor;
  99.     double m_fillTrans;
  100.     bool   m_fillRule;
  101.     int    m_fillMode;            // 0 = none, 1 = solid, 2 = gradient
  102.     int    m_gradientMode;        // 1 = linear, 2 = radial
  103. /* Stroking */
  104.     ScColorShade m_strokeColor;
  105.     double m_strokeTrans;
  106.     double m_lineWidth;
  107. /* Grayscale conversion option */
  108.     bool   m_convertToGray;
  109.  
  110. /* Line End Style */
  111.     Qt::PenCapStyle m_lineEnd;
  112. /* Line Join Style */
  113.     Qt::PenJoinStyle m_lineJoin;
  114. /* The Dash Array */
  115.     QVector<double> m_array;
  116.     double m_offset;
  117. /* Transformation Stack */
  118.     QStack<QMatrix> m_stack;
  119.  
  120. /* Cairo context */
  121.     cairo_t* m_cr;
  122.  
  123. /* Color conversion function */
  124.     QColor transformColor( ScColorShade& colorShade, double trans );
  125.     void   transformImage( QImage& image );
  126.  
  127.     QStack<int> m_gStates;
  128.     double      m_positionX;
  129.     double      m_positionY;
  130. };
  131.  
  132. #endif
  133.